menuitems: Use submenuitem accessible exclusively
authorBenjamin Otte <otte@redhat.com>
Wed, 6 Jul 2011 16:43:07 +0000 (18:43 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 6 Jul 2011 16:47:00 +0000 (18:47 +0200)
Submenus can come and go, so we cannot use an accessible that doesn't
allow for that.

Also, this fixes a rather large refleak.

gtk/gtkcheckmenuitem.c
gtk/gtkmenuitem.c
gtk/gtkradiomenuitem.c

index 27465f50398478bec3d76ce5839afd469bd21022..66c078fb19b3dfda480dc9e295fe6bb06a733bfd 100644 (file)
@@ -103,24 +103,6 @@ G_DEFINE_TYPE_WITH_CODE (GtkCheckMenuItem, gtk_check_menu_item, GTK_TYPE_MENU_IT
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE,
                                                 gtk_check_menu_item_activatable_interface_init))
 
-static AtkObject *
-gtk_check_menu_item_get_accessible (GtkWidget *widget)
-{
-  GObject *object;
-  AtkObject *accessible;
-
-  /* FIXME this is not really right, submenus can come and go */
-  if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)))
-    object = g_object_new (GTK_TYPE_CHECK_SUBMENU_ITEM_ACCESSIBLE, NULL);
-  else
-    object = g_object_new (GTK_TYPE_CHECK_MENU_ITEM_ACCESSIBLE, NULL);
-
-  accessible = ATK_OBJECT (object);
-  atk_object_initialize (accessible, widget);
-
-  return accessible;
-}
-
 static void
 gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
 {
@@ -169,7 +151,8 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass)
                                                              GTK_PARAM_READABLE));
 
   widget_class->draw = gtk_check_menu_item_draw;
-  widget_class->get_accessible = gtk_check_menu_item_get_accessible;
+
+  gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_CHECK_SUBMENU_ITEM_ACCESSIBLE);
 
   menu_item_class->activate = gtk_check_menu_item_activate;
   menu_item_class->hide_on_activate = FALSE;
index 3bb0da8c64130fe31a3d34c7a243ad8535ca7b48..7566baddf55ad3baefac418caa6be6b2ffdf80e9 100644 (file)
@@ -209,24 +209,6 @@ G_DEFINE_TYPE_WITH_CODE (GtkMenuItem, gtk_menu_item, GTK_TYPE_BIN,
                          G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE,
                                                 gtk_menu_item_activatable_interface_init))
 
-static AtkObject *
-gtk_menu_item_get_accessible (GtkWidget *widget)
-{
-  GObject *object;
-  AtkObject *accessible;
-
-  /* FIXME this is not really right, submenus can come and go */
-  if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)))
-    object = g_object_new (GTK_TYPE_SUBMENU_ITEM_ACCESSIBLE, NULL);
-  else
-    object = g_object_new (GTK_TYPE_MENU_ITEM_ACCESSIBLE, NULL);
-
-  accessible = ATK_OBJECT (object);
-  atk_object_initialize (accessible, widget);
-
-  return accessible;
-}
-
 static void
 gtk_menu_item_class_init (GtkMenuItemClass *klass)
 {
@@ -254,7 +236,8 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass)
   widget_class->get_preferred_width = gtk_menu_item_get_preferred_width;
   widget_class->get_preferred_height = gtk_menu_item_get_preferred_height;
   widget_class->get_preferred_height_for_width = gtk_menu_item_get_preferred_height_for_width;
-  widget_class->get_accessible = gtk_menu_item_get_accessible;
+
+  gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SUBMENU_ITEM_ACCESSIBLE);
 
   container_class->forall = gtk_menu_item_forall;
 
index a17a0ee2eec381fd3e725c1a6f66309130ba14b8..e5969761904ed5870cd3632d779711aa96e7c3d7 100644 (file)
@@ -394,24 +394,6 @@ gtk_radio_menu_item_get_group (GtkRadioMenuItem *radio_menu_item)
   return radio_menu_item->priv->group;
 }
 
-static AtkObject *
-gtk_radio_menu_item_get_accessible (GtkWidget *widget)
-{
-  GObject *object;
-  AtkObject *accessible;
-
-  /* FIXME this is not really right, submenus can come and go */
-  if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)))
-    object = g_object_new (GTK_TYPE_RADIO_SUBMENU_ITEM_ACCESSIBLE, NULL);
-  else
-    object = g_object_new (GTK_TYPE_RADIO_MENU_ITEM_ACCESSIBLE, NULL);
-
-  accessible = ATK_OBJECT (object);
-  atk_object_initialize (accessible, widget);
-
-  return accessible;
-}
-
 static void
 gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass)
 {
@@ -427,7 +409,8 @@ gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass)
   gobject_class->get_property = gtk_radio_menu_item_get_property;
 
   widget_class->destroy = gtk_radio_menu_item_destroy;
-  widget_class->get_accessible = gtk_radio_menu_item_get_accessible;
+
+  gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_RADIO_SUBMENU_ITEM_ACCESSIBLE);
 
   menu_item_class->activate = gtk_radio_menu_item_activate;